Backend Engineering > Spring
42 개의 글
← 돌아가기 Backend EngineeringEdge Computing Patterns for Backend Developers
백엔드 개발자가 알아야 할 엣지 컴퓨팅 패턴을 다룹니다. CDN 활용, Edge Functions, 지역별 라우팅부터 하이브리드 아키텍처까지 실무 가이드를 제공합니다.
Cloud-Native Observability Stack Part 5 - Debugging Production Issues with Observability Data
Observability 데이터(트레이스, 메트릭, 로그)를 활용하여 프로덕션 이슈를 효과적으로 디버깅하는 방법을 다룹니다. 실제 장애 시나리오와 해결 과정을 상세히 설명합니다.
Cloud-Native Observability Stack Part 4 - Metrics and Alerting with Prometheus/Grafana
Prometheus와 Grafana를 활용하여 Spring Boot 애플리케이션의 메트릭을 수집하고 시각화하는 방법을 다룹니다. 커스텀 메트릭, SLI/SLO 대시보드, 알림 설계까지 실무 가이드를 제공합니다.
Cloud-Native Observability Stack Part 3 - Structured Logging with Correlation IDs
마이크로서비스 환경에서 구조화된 로깅과 Correlation ID를 구현하는 방법을 다룹니다. JSON 로깅, MDC 패턴, 로그 집계까지 실무 적용 가이드를 제공합니다.
Cloud-Native Observability Stack Part 2 - Distributed Tracing Across Microservices
마이크로서비스 환경에서 분산 추적을 구현하는 방법을 다룹니다. Trace Context, Span 계층 구조, 샘플링 전략까지 실무 적용 가이드를 제공합니다.
Cloud-Native Observability Stack Part 1 - OpenTelemetry Instrumentation in Spring Boot
OpenTelemetry를 활용하여 Spring Boot 애플리케이션에 관측 가능성을 추가하는 방법을 다룹니다. 자동 계측, 수동 span 생성, 컨텍스트 전파까지 실무 적용 가이드를 제공합니다.
Spring Boot 4.0 주요 변경사항과 새로운 기능
Spring Boot 4.0의 주요 변경사항, 새로운 기능, 마이그레이션 가이드를 정리한다
Production-Ready Event-Driven Architecture Part 5 - Event Schema Evolution and Versioning
이벤트 기반 시스템에서 스키마 진화를 안전하게 관리하는 방법을 다룹니다. Avro, Protobuf를 활용한 스키마 버전 관리, 하위 호환성 보장, Schema Registry 활용까지 실무 가이드를 제공합니다.
Spring Boot JWT 인증과 인가 구현하기
Spring Boot 3.x와 Spring Security 6.x를 사용하여 JWT 기반 인증과 인가를 구현하는 방법을 정리한다
Production-Ready Event-Driven Architecture Part 4 - Saga Pattern for Distributed Transactions
마이크로서비스 환경에서 분산 트랜잭션을 처리하는 Saga Pattern을 다룹니다. Choreography와 Orchestration 방식의 구현, 보상 트랜잭션, 상태 머신까지 실무 적용 가이드를 제공합니다.
그래프 알고리즘으로 친구 추천하기
Neo4j 그래프 알고리즘을 사용하여 친구 추천 시스템을 구현하는 방법
Production-Ready Event-Driven Architecture Part 3 - CQRS with Separate Read/Write Models
CQRS(Command Query Responsibility Segregation) 패턴을 통해 읽기와 쓰기 모델을 분리하는 방법을 다룹니다. 최종적 일관성(Eventual Consistency) 처리와 실무 적용 전략을 상세히 설명합니다.
그래프 데이터베이스로 활동 피드 구현하기
Neo4j를 사용하여 소셜 네트워크의 홈 피드와 타임라인을 구현하는 방법
Production-Ready Event-Driven Architecture Part 2 - Implementing the Outbox Pattern
분산 시스템에서 데이터 일관성을 보장하는 Transactional Outbox Pattern의 구현 방법을 다룹니다. Debezium CDC를 활용한 exactly-once 의미론 구현까지 실무 적용 가이드를 제공합니다.
친구, 팔로워, 연결 관계 구현하기
Neo4j에서 팔로우, 친구 요청, 상호 친구 기능을 구현하는 방법
Production-Ready Event-Driven Architecture Part 1 - Event Sourcing Fundamentals
이벤트 소싱의 핵심 개념과 Spring Boot에서의 구현 방법을 알아봅니다. Event Store 설계, Aggregate Root, Projection, Snapshotting까지 실무에서 바로 적용할 수 있는 패턴을 다룹니다.
소셜 네트워크 그래프 스키마 설계
그래프 데이터베이스로 소셜 네트워크의 사용자, 게시물, 관계를 모델링하는 방법
Neo4j와 Spring Boot 시작하기
Spring Boot에서 Neo4j 그래프 데이터베이스를 설정하고 간단한 쿼리를 실행하는 방법
ActiveMQ와 JMS를 사용한 SpringBoot 메시지
SpringBoot를 사용해서 개발을 하다보면 Exception 처리를 해야하는 경우가 생긴다. 해당하는 경우에 어떻게 예외처리하면 좋은지, 어떤 방법들이 있는지 한번 정리해보고자 한다
SpringBoot Exception 처리하기
SpringBoot를 사용해서 개발을 하다보면 Exception 처리를 해야하는 경우가 생긴다. 해당하는 경우에 어떻게 예외처리하면 좋은지, 어떤 방법들이 있는지 한번 정리해보고자 한다
스프링부트 멀티모듈 구성하기(4) - Stream 어플리케이션
스트림 모듈을 세팅하면서 Kafka와 어떻게 SpringBoot가 커넥션을 맺고, Consumer와 Producer가 어떻게 세팅되는지 정리해보려고한다. Kafka는 로컬 카프카도 괜찮고, 서버에 띄워진 Kafka, 혹은 Docker, Confluent등등 Kafka를 지원하는 솔루션이면 모두 사용 할 수 있다. 본문은 Kafka가 모두 준비되어있다는 가정하에 작성하려고한다.
스프링부트 멀티모듈 구성하기(3) - API 모듈 작성하기
module-core에서 Customer와 Order 엔티티를 선언했는데, 이에 맞게 module-api에서는 Customer와 Order 읽어오기 / 쓰기 API를 만들어 보자.
스프링부트 멀티모듈 구성하기(2) - 코어모듈에 Entity 적용 해놓기
...그래서 코어모듈에 엔티티를 만들어놓고, 각각의 모듈에서 코어모듈을 의존성으로 추가하면, 코어모듈에 있는 엔티티를 사용할 수 있다....
스프링부트 멀티모듈 구성하기(1) - 프로젝트 구조만들기
...멀티모듈을 적용시켜서 엔티티들을 공통적으로 사용하고, 그외의 고유한 기능들을 각각의 서버에서 사용하자는 생각이 들었다. ...
비밀번호 유효성 검증기 - TDD 활용하기
테스트코드에서 요구조건을 먼저 실현하고, 실현한 요구조건에서 실제 코드에 반영되지 않은 부분들을 하나씩 만들어가며 작업 ...
Kotlin과 Spring을 사용한 Server에 여러개의 DataSource를 사용하자
Kotlin과 Spring을 사용한 Server에 여러개의 DataSource를 사용하자. 여러개의 데이터베이스를 연결하는 ...
SpringBoot 에서 Logging을 사용해보자
로그는 간단하게 말해서 연속된 데이터의 기록이라고 할 수 있다. Kotlin을 사용한 Spring에서 로그를 남겨보자
SpringBoot 에서 JPA를 사용한 Repository 테스트
SpringBoot를 사용해서 h2데이터베이스와 관련된 테스트를 진행 해 보려고 한다
SpringBoot Kotlin으로 작성하기
SpringBoot를 kotlin으로 작성하여 h2와 JPA를 사용해 주문모델을 구현 해 보자
SpringBoot와 Spring Cloud Gateway 사용하기
API Gateway는 다수의 서버를 하나로 묶어, 외부 애플리케이션 혹은 클라이언트에 대한 하나의 진입점이라고 생각하면 된다. 외부 어플리케이션 및 외부 클라이언트들은 마이크로 서비스에 직접 엑세스 하는 것이 제한되어 있기 때문에 그 사이의 중개자 역할을 한다
SpringBoot 사용하여 Request요청을 로깅하기
Request 요청 로깅을 할 경우, 모든 REST API 컨트롤러에 로그를 남기는것도 하나의 방법이다. 하지만 모든 API 컨트롤러에 로깅을 작성하게 된다면 비효율적으로 작업이 될 수 있다. Spring Interceptor 라는 것을 사용해서, 컨트롤러의 Handler로 도착하기 전에 가로채어 따로 작업을 해 주는 방법을 정리하려고 한다
SpringBoot에서 스케쥴링 사용하기
특정 시점이나 특정 시간 간격, 혹은 정해진 시간에 실행해야 하는 작업이 있을 수 있다. 이런 작업들을 '스케쥴링 된 작업' 혹은 '배치작업' 이라고 하는데 Spring에서 지원하는 방법은 크게 두 가지가 있다. 이번에는 스프링의 스케쥴링 어노테이션을 사용한 스케쥴 작업을 생성 해 보려고 한다.
SpringBoot에서 Kafka Event Message 보내고 받기
빅 데이터의 세계에서 안정적인 스트리밍 플랫폼은 필수이다. 현재 가장 주목받고있는 kafka 스트리핑 플랫폼과 SpringBoot를 활용해서 간단한 Event 메시지를 주고받는 작업을 해보자
SpringBoot에서 Redis 캐시를 사용하기
Spring Boot에서 Redis Cache를 사용하여 데이터 접근 성능을 높이는 방법을 알아봅니다.
SpringBoot에서 Redis를 데이터베이스로 사용하기
많은 경우에 Spring은 DB에 담긴 데이터를 가져오고 전달하는 역할을 하고있는데 이 때, Redis를 가지고 데이터에 빠르게 접근하는 방법을 정리 해 보려고 한다. Redis는 데이터베이스로도 사용되고, Message Broker로도 사용되지만 Cache Manager에 더 많이 사용된다. 한번 만들어보면서 정리 해 보도록 하겠다
SpringBoot Configuration에서 값 가져오기 - @Value
application.properties를 사용 해도 되지만 application.yml도 지원 하기 때문에, 새로 만들어 Hierarchy를 표현해서 보기 편하도록 작성 하는 방법도 있다. 더불어서, 이 설정파일인 application.yml의 값들을 불러와서 사용 하는 @Value 어노테이션을 간단히 정리 해 보려고 한다.
SpringBoot-Redis 로 만든 디저트가게 예제
SpringBoot 와 Redis를 이용한 디저트가게 예제
SpringBoot의 Validation을 사용 해 보자
Spring Validation이란? validation이란 프로그래밍에 있어서 가장 필요한 부분이다. Java/Kotlin 에서는 null값에 대해 접근하려고 할 때, null point exception이 발생한다. 이런 부분을 방지하기 위해 미리 검증하는 과정을
SpringBoot 예외처리하기 - Exception Handling
SpringBoot Exception 처리하기 - ControllerAdvice, ExceptionHandler
Spring Boot DB 연동과 테스트
SpringBoot를 사용해 H2 DB 연결하고 테스트하기
Kotlin을 사용한 Spring Boot 개발기 - Controller (@requestBody, Dto 생성하기)
마찬가지로 @RestController 어노테이션을 사용해서 만든 controller 내부에서 사용 하려고한다.
Kotlin을 사용한 Spring Boot 개발기 - Controller (@RequestParam, @PathVariable)
Kotlin을 사용해서 SpringBoot를 개발 해 보려고 한다.